home *** CD-ROM | disk | FTP | other *** search
- #ifndef BCHANNELJOBS_H
- #define BCHANNELJOBS_H
- /*
- **
- ** $Id: bchanneljobs.h,v 1.2 1995/10/07 02:52:39 chris Exp $
- ** $Revision: 1.2 $
- **
- ** $Filename: developer/bchanneljobs.h $
- ** $Author: chris $
- ** $Date: 1995/10/07 02:52:39 $
- ** $Portability: ANSI $
- **
- ** B-Kanal Lese/Schreibjobs
- **
- ** THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF RELOG AG.
- **
- ** COPYRIGHT (C) 1992-1995 BY RELOG AG, ZUERICH. ALL RIGHTS RESERVED.
- ** NO PART OF THIS SOFTWARE MAY BE COPIED, REPRODUCED, OR TRANSMITTED
- ** IN ANY FORM OR BY ANY MEANS, WITHOUT THE PRIOR WRITTEN PERMISSION
- ** OF RELOG AG.
- **
- */
-
- #include <stdio.h>
-
- #include "os.h"
-
-
- #define B_BLOCKSIZE 2048 /* CAPI block size */
- #define B_BUFFERSIZE 32768 /* Read chunk size, must be a multiple of B_BLOCKSIZE!! */
-
- #define B_VOLUME_MAX 32768 /* Maximale Lautstärke */
- #define B_VOLUME_SHIFT 15 /* LOG2(B_VOLUME_MAX) */
-
-
- /*
- ** Struktur eines Datenpuffers
- */
- struct Buffer
- {
- U8 *Position; /* Zeiger auf aktuelle Position in den Daten */
- U16 ActLength; /* Länge der daten im Puffer */
- U16 TotalLength; /* Totale Grösse des Datenpuffers */
- BOOL EndOfFile; /* TRUE wenn End of File */
- U8 Data[2]; /* Die Daten, variable Länge! */
- };
-
-
- /*
- ** Struktur eines B-Kanals
- */
- struct BChannel
- {
- IC_NODE Node;
-
- U32 NCCI; /* NCCI des Kanals */
-
- IC_LIST JobList; /* Liste der aktuellen Jobs */
- U32 IOProcess; /* I/O-Prozess */
-
- struct Buffer *WriteBuffer; /* Zeiger auf zu manipulierende Daten */
- struct Buffer *PlayBuffer; /* Zeiger auf Daten, die gesendet wurden */
-
- struct Buffer Buf1; /* Die beiden Puffer */
- U8 BD1[B_BLOCKSIZE];
-
- struct Buffer Buf2;
- U8 BD2[B_BLOCKSIZE];
- };
-
-
- /*
- ** Struktur eines Lese- oder Schreibjobs
- */
- struct BChannel_Job
- {
- IC_NODE Node; /* Verkettung */
-
- U16 Flags; /* JOBF_... */
- U8 State; /* JOBSTATE_... */
- U8 pad;
-
- FILE *File; /* File handle */
-
- U32 SigProc; /* Für Signalling des Job-Endes */
-
- U16 ActVolume; /* Aktuelle Lautstärke */
- U16 EndVolume; /* Ziel-Lautstärke */
-
- struct BChannel *BChannel; /* Zugehöriger B-Channel */
-
- struct Buffer *WriteBuffer; /* Zeiger auf zu manipulierende Daten */
- struct Buffer *PlayBuffer; /* Zeiger auf Daten, die gesendet wurden */
-
- struct Buffer Buf1; /* Die beiden Puffer */
- U8 BD1[B_BUFFERSIZE];
-
- struct Buffer Buf2;
- U8 BD2[B_BUFFERSIZE];
- };
-
-
- #define JOBF_READ 0x01
- #define JOBF_WRITE 0x02
-
- #define JOBF_LOOP 0x10
- #define JOBF_AUTOFREE 0x20 /* Job freigeben wenn fertig */
-
- #define JOBSTATE_IDLE 0
- #define JOBSTATE_RUNNING 1
- #define JOBSTATE_TERMINATED 2
-
-
- /*
- ** Variable
- */
- #ifdef _BCHANNELJOBS
-
- NEW_LIST( bchannellist ); /* Liste der aktiven B-Kanäle */
-
- #else
-
- extern IC_LIST bchannellist;
-
- #endif
-
-
- /*
- ** Prototypes
- */
-
- struct BChannel *
- BChannel_New( U32 );
-
- VOID
- BChannel_Free( struct BChannel * );
-
- struct BChannel *
- BChannel_Find( U32 );
-
- struct BChannel_Job *
- BChannel_AddJob( struct BChannel *, U8 *, U16, U16, U32 );
-
- VOID
- BChannel_FreeJob( struct BChannel_Job * );
-
- VOID
- BChannel_DataB3Ind( U32, U8 *, U16 );
-
- VOID
- BChannel_DataB3Conf( U32 );
-
- #endif
-